﻿using System;
using System.Data;
using System.Windows.Forms;
using Telerik.WinControls.UI;
using Zvezda.FSO2.DB;

namespace FSO
{
    public partial class FormNSIFinResource : Form, IntefaceObjectForm
    {
        public FormNSIFinResource()
        {
            InitializeComponent();
        }

        #region IntefaceObjectForm Members

        public int Save()
        {
            int nRowsUpdatedCount = 0;

            nRowsUpdatedCount = nsI_FINANCE_RESOURCETableAdapter1.Update(dataSetFSO1.NSI_FINANCE_RESOURCE);

            return nRowsUpdatedCount;
        }

        public string FormName
        {
            get { return "NSI_Finance_Resource"; }
        }

        #endregion

        private void FormNSIFinResource_Load(object sender, EventArgs e)
        {
            nsI_FINANCE_RESOURCETableAdapter1.Fill(dataSetFSO1.NSI_FINANCE_RESOURCE);

            GridViewTextBoxColumn colName = new GridViewTextBoxColumn("NAME", dataSetFSO1.NSI_FINANCE_RESOURCE.NAMEColumn.ColumnName);
            colName.HeaderText = "Название";

            radGridViewNSIFinResource.MasterTemplate.Columns.Clear();
            radGridViewNSIFinResource.MasterTemplate.Columns.Add(colName);

            radGridViewNSIFinResource.DataSource = dataSetFSO1.NSI_FINANCE_RESOURCE;

            radGridViewNSIFinResource.MultiSelect = true;
        }

        private void FormNSIFinResource_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (dataSetFSO1.NSI_FINANCE_RESOURCE.GetChanges() != null)
            {
                DialogResult result = MessageBox.Show(this, "Были внесены изменения. Сохранить?", "Сохранить изменения?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    this.Save();
                }
                else if (result == DialogResult.Cancel)
                {
                    e.Cancel = true;
                }
                else
                {
                    dataSetFSO1.NSI_FINANCE_RESOURCE.RejectChanges();
                }
            }
        }

        private void radGridViewNSIFinResource_CurrentRowChanged(object sender, CurrentRowChangedEventArgs e)
        {
            //Была ли выделенная предыдущая строка (ошибка вызывается при открытии формы), все действия происходят с предыдущей выделенной строкой 
            if (e.OldRow != null)
            {
                DataRowView drv = e.OldRow.DataBoundItem as DataRowView;
                if (drv != null && drv.Row != null && drv.Row is DataSetFSO.NSI_FINANCE_RESOURCERow)
                {
                    DataSetFSO.NSI_FINANCE_RESOURCERow rowFinRes = drv.Row as DataSetFSO.NSI_FINANCE_RESOURCERow;

                    if (rowFinRes.RowState == DataRowState.Modified && (int)nsI_FINANCE_RESOURCETableAdapter1.HasLinkFinRes(rowFinRes.ID) > 0)
                    {
                        DialogResult result = MessageBox.Show(this, "Изменения отразятся на связанных объектах! Принять изменения?", "Принять изменения?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                        if (result == DialogResult.No)
                        {
                            rowFinRes.RejectChanges();
                        }
                        else
                        {
                            nsI_FINANCE_RESOURCETableAdapter1.Update(rowFinRes);
                            rowFinRes.AcceptChanges();
                        }
                    }
                }
            }
        }

        private void radGridViewNSIFinResource_UserDeletingRow(object sender, GridViewRowCancelEventArgs e)
        {
            DialogResult result = MessageBox.Show(this, "Вы действительно хотите удалить данную запись(и)?", "Подтверждение удаления", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

            if (result == DialogResult.No)
            {
                e.Cancel = true;
            }
            else
            {
                foreach (GridViewRowInfo ri in e.Rows)
                {
                    DataRowView drv = ri.DataBoundItem as DataRowView;
                    DataSetFSO.NSI_FINANCE_RESOURCERow row = drv.Row as DataSetFSO.NSI_FINANCE_RESOURCERow;

                    if (row != null && (int)nsI_FINANCE_RESOURCETableAdapter1.HasLinkFinRes(row.ID) > 0)
                    {
                        MessageBox.Show(this, "Невозможно удалить один или несколько объектов!", "Ошибка удаления", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        e.Cancel = true;
                        break;
                    }
                }
            }
        }



        #region IntefaceObjectForm Members


        public int RefreshForm()
        {
            return nsI_FINANCE_RESOURCETableAdapter1.Fill(dataSetFSO1.NSI_FINANCE_RESOURCE);
        }

        #endregion
    }
}
